//package org.cxn.tools.simple;
//import java.io.BufferedReader;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//
//import org.apache.tools.zip.ZipEntry;
//import org.apache.tools.zip.ZipFile;
///**
// * rar zip 文件压缩 解压 相关代码
// * Created by chenxiangning on 2015/8/10.
// */
//public class ZipRarTool {
//    /*
//	 * 能支持中文的压缩 参数base 开始为"" first 开始为true
//	 */
//    private static void zip(org.apache.tools.zip.ZipOutputStream out, File f,
//                            String base, boolean first) throws Exception {
//        if (first) {
//            if (f.isDirectory()) {
//                out.putNextEntry(new org.apache.tools.zip.ZipEntry("/"));
//                base = base + f.getName();
//                first = false;
//            } else
//                base = f.getName();
//        }
//        if (f.isDirectory()) {
//            File[] fl = f.listFiles();
//            base = base + "/";
//            for (int i = 0; i < fl.length; i++) {
//                zip(out, fl[i], base + fl[i].getName(), first);
//            }
//        } else {
//            out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
//            FileInputStream in = new FileInputStream(f);
//            int b;
//            System.out.println(base);
//            while ((b = in.read()) != -1) {
//                out.write(b);
//            }
//            in.close();
//        }
//    }
//
//    /*
//     * 解压文件 unZip为解压路径
//     */
//    private static void unZipFileByOpache(org.apache.tools.zip.ZipFile zipFile,
//                                          String unZipRoot) throws Exception, IOException {
//        java.util.Enumeration e = zipFile.getEntries();
//        org.apache.tools.zip.ZipEntry zipEntry;
//        while (e.hasMoreElements()) {
//            zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
//            InputStream fis = zipFile.getInputStream(zipEntry);
//            if (zipEntry.isDirectory()) {
//            } else {
//                File file = new File(unZipRoot + File.separator
//                        + zipEntry.getName());
//                File parentFile = file.getParentFile();
//                parentFile.mkdirs();
//                FileOutputStream fos = new FileOutputStream(file);
//                byte[] b = new byte[1024];
//                int len;
//                while ((len = fis.read(b, 0, b.length)) != -1) {
//                    fos.write(b, 0, len);
//                }
//                fos.close();
//                fis.close();
//            }
//        }
//    }
//
//    /**
//     * 压缩文件 可以压缩为 rar 和 zip 格式文件
//     * @param zipFileName	压缩后文件名
//     * @param inputFileName 源文件名
//     * @throws Exception
//     */
//    public static void ZipFile(String zipFileName, String inputFileName)
//            throws Exception {
//        org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(
//                new FileOutputStream(zipFileName));
//        File inputFile = new File(inputFileName);
//        zip(out, inputFile, "", true);
//        System.out.println("zip done");
//        out.close();
//    }
//
//    /**
//     * 解压缩文件 zip 格式1  rar不行
//     * @param unZipFileName  压缩文件名
//     * @param unZipPath		 解压缩目标文件夹
//     * @throws Exception
//     */
//    public static void unZipFile(String unZipFileName, String unZipPath)
//            throws Exception {
//        ZipFile zipFile = new ZipFile(unZipFileName);
//
//        unZipFileByOpache(zipFile, unZipPath);
//        System.out.println("unZip Ok");
//    }
//
//    /**
//     * 解压缩 zip 格式2  rar不行
//     * @param zipFileName
//     * @param outputDirectory
//     * @throws Exception
//     */
//    public static void unZip(String zipFileName, String outputDirectory)
//            throws Exception {
//        try {
//            ZipFile zipFile = new ZipFile(zipFileName);
//            java.util.Enumeration e = zipFile.getEntries();
//            ZipEntry zipEntry = null;
//            createDirectory(outputDirectory, "");
//            while (e.hasMoreElements()) {
//                zipEntry = (ZipEntry) e.nextElement();
//                System.out.println("正在解压: " + zipEntry.getName());
//                String name = null;
//                if (zipEntry.isDirectory()) {
//                    name = zipEntry.getName();
//                    name = name.substring(0, name.length() - 1);
//                    File f = new File(outputDirectory + File.separator + name);
//                    f.mkdir();
//                    System.out.println("创建目录：" + outputDirectory
//                            + File.separator + name);
//                } else {
//                    String fileName = zipEntry.getName();
//                    fileName = fileName.replace('\\', '/');
//                    // System.out.println("测试文件1：" +fileName);
//                    if (fileName.indexOf("/") != -1) {
//                        createDirectory(outputDirectory, fileName.substring(0,
//                                fileName.lastIndexOf("/")));
//                        fileName = fileName.substring(
//                                fileName.lastIndexOf("/") + 1, fileName
//                                        .length());
//                    }
//
//                    File f = new File(outputDirectory + File.separator
//                            + zipEntry.getName());
//
//                    f.createNewFile();
//                    InputStream in = zipFile.getInputStream(zipEntry);
//                    FileOutputStream out = new FileOutputStream(f);
//
//                    byte[] by = new byte[1024];
//                    int c;
//                    while ((c = in.read(by)) != -1) {
//                        out.write(by, 0, c);
//                    }
//                    out.close();
//                    in.close();
//                }
//
//            }
//
//        } catch (Exception ex) {
//            System.out.println(ex.getMessage());
//        }
//    }
//    private static void createDirectory(String directory, String subDirectory) {
//        String dir[];
//        File fl = new File(directory);
//        try {
//            if (subDirectory == "" && fl.exists() != true)
//                fl.mkdir();
//            else if (subDirectory != "") {
//                dir = subDirectory.replace('\\', '/').split("/");
//                for (int i = 0; i < dir.length; i++) {
//                    File subFile = new File(directory + File.separator + dir[i]);
//                    if (subFile.exists() == false)
//                        subFile.mkdir();
//                    directory += File.separator + dir[i];
//                }
//            }
//        } catch (Exception ex) {
//            System.out.println(ex.getMessage());
//        }
//    }
//
//    /**
//     * 解压rar文件(需要系统安装Winrar) 这个方法也可以解压zip文件
//     * @param targetPath
//     * @param absolutePath
//     * 由于WinRAR 是共享软件，并不是开源的，所以解压rar文件的前提是系统已经安装了winrar，
//     * 比如本人的安装路径是C:\\Program Files\\WinRAR\\winrar.exe 一般都是这里
//     * 然后运用java.lang.Process 的相关知识来运行系统命令行来实现解压的
//     * winrar 命令行相关参数自己可以搜索下的网上资料很多
//     */
//    public static void unRarFile(String targetPath, String absolutePath) {
//        try {
//            String cmd = "C:\\Program Files\\WinRAR\\winrar.exe";
//            String unrarCmd = cmd + " x -r -p- -o+ " + absolutePath + " "
//                    + targetPath;
//            Runtime rt = Runtime.getRuntime();
//            Process pre = rt.exec(unrarCmd);
//            InputStreamReader isr = new InputStreamReader(pre.getInputStream());
//            BufferedReader bf = new BufferedReader(isr);
//            String line = null;
//            while ((line = bf.readLine()) != null) {
//                line = line.trim();
//                if ("".equals(line)) {
//                    continue;
//                }
//                System.out.println(line);
//            }
//            bf.close();
//        } catch (Exception e) {
//            System.out.println("解压发生异常");
//        }
//    }
//
//
//    public static void main(String[] args) throws Exception {
////		压缩 测试
////		ZipFile("C:/Documents and Settings/Administrator/桌面/Java数组.rar",
////				"C:/Documents and Settings/Administrator/桌面/Java数组.pdf");
//
////		解压 zip 测试1
////		unZipFile("C:/裁剪图片.zip", "C:/");
//
////		解压 zip 测试2
////		unZip("C:/裁剪图片.zip", "C:/");
//
////		利用系统软件进行解压 rar 和 zip 文件
//        String targetPath = "C:/";
//        String rarFilePath = "C:/apache-ant-1.7.1-bin.zip";
//        unRarFile(targetPath, rarFilePath);
//
//    }
//}
